package framework.distributed;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 分散モデルは異なるJVMで実行されるため、mainが必要になる。
 * @author uehara
 *
 */
public class DeviceServer extends framework.sequential.DeviceServer {

//	public static final int PORT = 4649;

	int port;
	ServerSocket ss;

//	public DeviceServer(String deviceName) {
//		this(deviceName, PORT);
//	}
//
	public DeviceServer(String deviceName, int port) {
		super(deviceName);
		this.port = port;
	}

	public void run() {
		try {
			ServerSocket ss = new ServerSocket(port);
			while (true) {
				Socket s = ss.accept();
				OutputStream out = s.getOutputStream();
				InputStream in = s.getInputStream();
				// TODO
				s.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * DeviceServerはHubServerのクライアントとして動作する。
	 * @param args
	 */
	public static void main(String[] args) {
		String deviceName = args[0];
		int devicePort = Integer.parseInt(args[1]);
		String hubName = args[2];
		int hubPort = Integer.parseInt(args[3]);
		// TODO HubConnector hub = HubConnector(hubName, hubPort)
		DeviceServer device = new DeviceServer(deviceName, devicePort);
		// TODO device.setHub(hub);
		device.run();
	}
}
// 課題
// + DeviceServerを拡張せずにSensorを初期化するにはどうすればよいか
//   - mainも変更したくない。
